#pragma once
#include <QTGui/QIcon>
namespace Gui {
   

    class BitmapFactory {
    public:
        
    };

    class BitmapFactoryInst {
        
    public:
        enum Position
        {
            TopLeft,  /**< Place to the top left corner */
            TopRight, /**< Place to the top right corner */
            BottomLeft, /**< Place to the bottom left corner */
            BottomRight /**< Place to the bottom right corner */
        };
        static QIcon mergePixmap (const QIcon &base, const QPixmap &px, Gui::BitmapFactoryInst::Position position){return QIcon();}
        QPixmap pixmapFromSvg(const char* name, const QSizeF& size,
    const std::map<unsigned long, unsigned long>& colorMapping= std::map<unsigned long, unsigned long>()) const {
            // If an absolute path is given
            QPixmap icon;
            return icon;
        }
        QIcon iconFromTheme(const char* name, const QIcon& fallback = QIcon())
        {
            /*QString iconName = QString::fromUtf8(name);
            QIcon icon = QIcon::fromTheme(iconName, fallback);
            if (icon.isNull()) {
                QPixmap px = pixmap(name);
                if (!px.isNull())
                    icon.addPixmap(px);
            }*/
            QIcon icon;
            return icon;
        }
        /*QPixmap pixmapFromSvg(const char* name, const QSizeF& size,
    const std::map<unsigned long, unsigned long>& colorMapping) const {
            // If an absolute path is given
            QPixmap icon;
            return icon; 
        }*/
    };
    inline BitmapFactoryInst& BitmapFactory()
    {
        static BitmapFactoryInst instance;
        return instance;
    }
}
